🐍Хитрая задача на Python для опытных разработчиков
🔹Уровень: Advanced 🔹Темы: изменяемые объекты, ссылки, list multiplication, side effects
📌Условие
Что выведет следующий код?
matrix = [[0] * 3] * 3
matrix[0][0] = 1
for row in matrix: print(row)
❓Вопросы
1. Почему изменяется весь первый столбец, а не только [0][0]? 2. Как работает [[0]*3]*3 и почему это опасно? 3. Как правильно создать независимую матрицу 3×3 из нулей?
🔍Разбор
✅Ожидаемый (и удивительный!) вывод:
[1, 0, 0] [1, 0, 0] [1, 0, 0]
🔧Почему так происходит
- Выражение [[0] * 3] * 3 создаёт три ссылки на один и тот же вложенный список. - matrix[0][0] = 1 меняет все строки, потому что они указывают на один и тот же объект в памяти.
⚠️Подвох
Это один из самых частых скрытых багов в Python, особенно при создании вложенных списков.
🧠Решение
Нужно использовать генератор списка, чтобы создать три независимых объекта:
matrix = [[0] * 3 for _ in range(3)]
Теперь matrix[0][0] = 1 затронет только первую строку:
[1, 0, 0] [0, 0, 0] [0, 0, 0]
📌 Всегда проверяй, создаёшь ли ты уникальные объекты, особенно если работаешь с вложенными структурами.
🐍Хитрая задача на Python для опытных разработчиков
🔹Уровень: Advanced 🔹Темы: изменяемые объекты, ссылки, list multiplication, side effects
📌Условие
Что выведет следующий код?
matrix = [[0] * 3] * 3
matrix[0][0] = 1
for row in matrix: print(row)
❓Вопросы
1. Почему изменяется весь первый столбец, а не только [0][0]? 2. Как работает [[0]*3]*3 и почему это опасно? 3. Как правильно создать независимую матрицу 3×3 из нулей?
🔍Разбор
✅Ожидаемый (и удивительный!) вывод:
[1, 0, 0] [1, 0, 0] [1, 0, 0]
🔧Почему так происходит
- Выражение [[0] * 3] * 3 создаёт три ссылки на один и тот же вложенный список. - matrix[0][0] = 1 меняет все строки, потому что они указывают на один и тот же объект в памяти.
⚠️Подвох
Это один из самых частых скрытых багов в Python, особенно при создании вложенных списков.
🧠Решение
Нужно использовать генератор списка, чтобы создать три независимых объекта:
matrix = [[0] * 3 for _ in range(3)]
Теперь matrix[0][0] = 1 затронет только первую строку:
[1, 0, 0] [0, 0, 0] [0, 0, 0]
📌 Всегда проверяй, создаёшь ли ты уникальные объекты, особенно если работаешь с вложенными структурами.
BY Python RU
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.
What Is Bitcoin?
Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for “an electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. “The reason why it’s worth money is simply because we, as people, decided it has value—same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.